# 10分钟教你用 Google Cloud Platform 搭建自己的VPN
本教程以 Google Cloud Platform 为例进演示
# 准备
- 能够访问谷歌站点
- Google 账号
- VISA 双币信用卡
# 申请并创建VM实例
# 1. 登陆 Google Cloud (opens new window) 点击免费使用,填写相关资料


# 2. 创建实例
导航菜单 → Compute Engine → VM实例
# 2.1 设置机器配置
填写实例 名称
选择 区域 及 地区(日本站点距离近,响应速度快)
内核 及 内存 选择最低配置(如还需其他服务可自行定义调整配置,)

# 2.2 设置操作系统和存储空间
按需选择操作系统和磁盘空间即可, 我这里选的是CentOS系统,版本10 硬盘空间20GB

# 2.3 设置网络
勾选 允许 HTTP 流量 允许 HTTPS 流量

确认配置和费用符合心理预期,点击创建即可
# 3. 创建防火墙规则
导航菜单 → VPC网络 → 防火墙

# 3.1 自定义规则配置


名称: 按规则自定义 目标: 网络中的所有实例 来源过滤条件:IPv4 来源IPv4范围: 0.0.0.0/0 协议和端口: 勾选 UDP 填写 500,4500,勾选 其他协议: 填写 esp
点击 创建
# 3.2 定义好的防火墙规则

# 4. 创建VPC网络
导航菜单 → VPC 网络

# 4.3 修改default配置
勾选 自动 及 全球 选项框
点击 保存

# 5. 登陆服务器
导航菜单 → Compute Engine → 虚拟机实例 → 点击 SSH

# 5.1 浏览器窗口登录


# 5.2 终端工具Tabby登录
# 5.2.1 准备 SSH 密钥
确保您在本地计算机上有一个 SSH 密钥对(通常是 id_rsa 和 id_rsa.pub)。
本次示例自定义来了名称my-gcp-key
如果没有密钥对,可以通过以下命令生成:
# 生成密钥对
ssh-keygen -t rsa -b 2048 -f ~/.ssh/my-gcp-key

# 5.2.2 拷贝密钥对
#显示公钥文件内容
cat my-gcp-key.pub

# 5.2.3 在Google Cloud中设置 SSH 密钥
在搜索框中输入 SSH Keys,跳转到对应的产品页面

将刚刚拷贝好的my-gcp-key.pub文件内容,放到SSH密钥中。

# 5.2.4 在终端工具Tabby中填写连接信息
主机: 输入 Google Cloud 实例的外部 IP 地址。
端口: 默认情况下是 22。
用户名: 输入 SSH 用户名(就是SSH密钥中的用户名)。
身份验证方法: 选择 “密钥”。
私钥: 选择您的私钥文件(如 ~/.ssh/my-gcp-key)。

登录后的界面

# 部署VPN服务
# 1. 下载脚本
# 更新yum包管理器
sudo yum update
# 使用 `yum` 包管理器安装 `wget`
sudo yum install wget
# 确认安装成功,可以执行以下命令检查 `wget` 版本
wget --version
# 使用 `wget` 从 `https://git.io/vpnsetup` 下载 VPN 设置脚本,并保存为 `vpnsetup.sh`
wget https://git.io/vpnsetup -O vpnsetup.sh

# 2. 运行脚本
#运行脚本并传递变量:
sudo VPN_IPSEC_PSK='预分享密钥' \
VPN_USER='用户名' \
VPN_PASSWORD='密码' \
sh vpnsetup.sh
五分钟后…

看到如上界面表示已经成功部署VPN服务,请将框内连接信息妥善保存
# 3. 管理 VPN 用户(IPsec PSK)
#下载更新脚本(可以用于更新和新增用户)
wget https://get.vpnsetup.net/updateusers -O updateusers.sh
#增加用户
sudo addvpnuser.sh '要添加的用户名' '密码'
# 或者更新用户
sudo addvpnuser.sh '要更新的用户名' '新密码'
# 查看用户信息文件 /etc/ppp/chap-secrets
sudo cat /etc/ppp/chap-secrets
# 查看IPsec PSK(预共享密钥)/etc/ipsec.secrets文件信息
sudo cat /etc/ipsec.secrets
详细部署VPN服务教程请移步至Github (opens new window)
# 客户端连接
# 1. OS X (macOS)
macOS 13 (Ventura) 及以上
你也可以使用 IKEv2 (opens new window)(推荐)或者 IPsec/L2TP (opens new window) 模式连接。
- 打开系统设置并转到网络部分。
- 在窗口右方单击 VPN。
- 从 添加VPN配置 下拉菜单选择 Cisco IPSec。
- 在打开的窗口中的 显示名称 字段中输入任意内容。
- 在 服务器地址 字段中输入
你的 VPN 服务器 IP。 - 在 帐户名称 字段中输入
你的 VPN 用户名。 - 在 密码 字段中输入
你的 VPN 密码。 - 从 类型 下拉菜单选择 共享密钥。
- 在 共享密钥 字段中输入
你的 VPN IPsec PSK。 - 保持 群组名称 字段空白。
- 单击 创建 保存 VPN 连接信息。
- 如果要在菜单栏显示 VPN 状态并快速访问相关设置,你可以转到系统设置的控制中心部分,滚动到页面底部并在 VPN 下拉菜单选择 在菜单栏中显示。
要连接到 VPN:使用菜单栏中的图标,或者打开系统设置的 VPN 部分并启用 VPN 连接。最后你可以到 这里 (opens new window) 检测你的 IP 地址,应该显示为你的 VPN 服务器 IP。

如果在连接过程中遇到错误,请参见 故障排除 (opens new window)。
# 1.1 详细的客户端连接方式
IPsec/XAuth VPN 客户端连接方式 (opens new window)(推荐) IPsec/L2TP VPN 客户端连接方式 (opens new window) IKEv2连接方式 (opens new window)
第一台设备连接成功后,为了保证后续设备能够正常使用VPN,建议优先阅读注意事项
# 2. 如何管理VPN用户
在默认情况下,搭建好VPN服务后,将只创建一个用于 VPN 登录的用户账户。如果你需要添加,更改或者删除用户,请阅读此链接 (opens new window)
# 3. 可能用到的命令
重启服务
sudo service ipsec restart && sudo service xl2tpd restart查看连接客户端
sudo ipsec whack --trafficstatus查看连接日志
tail -F /var/log/auth.log | grep pluto查看服务状态
sudo ipsec status sudo ipsec verify
# 4. 注意事项
本注意事项为我在使用过程当中从所遇到的问题当中整理得来,目前还未找到解决办法
- 多台(2台及以上)设备不能通过同一路由器进行VPN连接,一个路由器只能路由一台设备连接VPN
- 同一账号可在多台设备上使用,但不能同时使用同一账号进行VPN连接
# 5. 遇到问题了
使用过程中出现任何问题都建议优先查看此链接 (opens new window),该VPN作者对使用者使用过程当中所产生的问题都做出了解答,如果问题仍然没有解决,不要犹豫,删掉所有实例及配置再次开始吧!
#下载卸载的脚本
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh